package com.tjvib.event;

import static com.tjvib.Constants.MESSAGE_ALIPAY_SDK_PAY;

import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;

import androidx.annotation.NonNull;

import com.tjvib.base.BaseActivity;
import com.tjvib.pay.ali.AlipayResult;

import java.util.Map;

public class PayResultHandler extends Handler {

    BaseActivity activity;

    public PayResultHandler(BaseActivity activity) {
        this.activity = activity;
    }

    @Override
    public void handleMessage(@NonNull Message msg) {
        switch (msg.what) {
            case MESSAGE_ALIPAY_SDK_PAY: {
                @SuppressWarnings("unchecked")
                AlipayResult payResult = new AlipayResult((Map<String, String>) msg.obj);
                /**
                 * 对于支付结果，请商户依赖服务端的异步通知结果。同步通知结果，仅作为支付结束的通知。
                 */
                String resultInfo = payResult.getResult();// 同步返回需要验证的信息
                String resultStatus = payResult.getResultStatus();
                // 判断resultStatus 为9000则代表支付成功
                if (TextUtils.equals(resultStatus, "9000")) {
                    //不做同步校验
//                        JSONObject resultJson = new JSONObject(resultInfo);
//                        String signType = resultJson.getString("sign_type");
//                        String sign = resultJson.getString("sign");

                    // 该笔订单是否真实支付成功，需要依赖服务端的异步通知。
                    activity.showHintDialog("订单支付成功");
                } else if (TextUtils.equals(resultStatus, "8000") || TextUtils.equals(resultStatus, "6004")) {
                    activity.showHintDialog("正在处理中，支付结果未知，请稍后查询支付状态");
                } else if (TextUtils.equals(resultStatus, "4000")) {
                    activity.showErrorDialog("订单支付失败");
                } else if (TextUtils.equals(resultStatus, "5000")) {
                    activity.showErrorDialog("重复请求");
                } else if (TextUtils.equals(resultStatus, "6001")) {
                    activity.showErrorDialog("用户中途取消");
                } else if (TextUtils.equals(resultStatus, "6002")) {
                    activity.showErrorDialog("网络连接出错");
                } else {
                    activity.showErrorDialog("其他支付错误：" + payResult);
                }
                break;
            }
            default:
                break;
        }
    }
}
